<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>

</head>
<body>

</body>
</html>
<script>
// 英文：
  // initial - 最初的 ；  init
  // accumulate -> 积累/累积

// 数组的迭代函数
const arr = [19, 18, 99, 12, 21, 1, 3];

// arr.forEach((item, index, array) => {})
  // 作用：just 遍历数组中的每个 item
  // 无返回值

// arr.map(callback)
  // 作用：「映射」
  // 有返回值

// arr.filter(callback)
  // 作用：「过滤」
  // 有返回值


/* 案例：将 arr 返回为值 [{age: xx}], xx 的值大于 18
  // map + filter 做到

  const result = arr
    .map(item => ({  // 小括号 里面 放 表达式
      age: item
    }))
    .filter(d => d.age > 18);
  console.log(result);
*/


// reduce 的作用： map + filter 才能做的 事儿， reduce 自己就能做

// 新知识：arr.reduce()
// 案例：用 reduce 重写上面的案例
const result = arr.reduce((accumulateValue, currentValue, index, array) => {
  console.log(accumulateValue, currentValue);

  if (currentValue > 18) { // filter 的作用
    // map 作用
    accumulateValue.push({
      age: currentValue
    });
  }

  return accumulateValue;
}, []);
console.log('result', result);
</script>